// #include<bits/stdc++.h>
// using namespace std;
// int main()
// {
//     int i;
//     cin>>i;
//     cout<<i<<'\n';
//     return 0;
// }

// #include <bits/stdc++.h>
// using namespace std;

// int* test()
// {
//     int* p = new int(7);
//     return p;
// }

// int* test2()
// {
//     int* parr = new int[7];
//     for(int i = 0;i < 7;++i)
//     {
//         parr[i] = i;
//     }
//     return parr;

// }

// int main()
// {d
//     int* p = test();
//     int* parr = test2();
//     cout<<*p<<'\n';
//     for(int i = 0;i<7;i++)
//     {
//         cout<<*(parr+i)<<'\n';
//     }
//     delete p;
//     delete[] parr;
//     return 0;
// }



// #include <bits/stdc++.h>
// using namespace std;

// class stu
// {
// public:
//     stu(int age)
//     {
//         this -> age = age;
//     }

//     void addage(int age)
//     {
//         this -> age += age;
//     }

//     stu& add(stu &s)
//     {
//         age += s.age;
//         return *this;
//     }
//     int age;
// };

// void test()
// {
//     stu s1(10);
//     stu s2(10);
//     s1.addage(20);
//     cout << s1.age;
// }

// void test02()
// {
//     stu s1(10);
//     stu s2(10);
//     s1.add(s2).add(s2).add(s2).add(s2).add(s2);
//     cout << s1.age;
// }

// int main()
// {
//     test02();
//     return 0;
// }


// #include <bits/stdc++.h>
// using namespace std;

// class stu
// {
// public:
//     int age;
//     mutable int m;
//     stu()
//     {
//         ;
//     }
// };

// void test()
// {
//     const stu s;
//     s.m = 50;
//     cout << s.m;
// }

// int main()
// {
//     test();
//     return 0;
// }


// #include <bits/stdc++.h>
// using namespace std;

// class stu
// {
// public:
//     stu()
//     {
//         ;
//     }

//     stu(int a,int b)
//     {
//         m_A = a;
//         m_B = b;
//     }

//     stu operator+ (stu& s)
//     {
//         stu temp;
//         temp.m_A = this->m_A + s.m_A;
//         temp.m_B = this->m_B + s.m_B;
//         return temp;
//     }

//     stu operator- (stu& s)
//     {
//         stu temp;
//         temp.m_A = this->m_A - s.m_A;
//         temp.m_B = this->m_B - s.m_B;
//         return temp;
//     }

//     stu& operator++ ()
//     {
//         m_A += 1;
//         m_B += 1;
//         return *this;
//     }

//     stu operator++ (int)
//     {
//         stu temp;
//         temp.m_A = this->m_A;
//         temp.m_B = this->m_B;
//         m_A++;
//         m_B++;
//         return temp;
//     }

//     stu& operator= (stu& s)
//     {
//         if(m_p != NULL)
//         {
//             delete m_p;
//             m_p = NULL;
//         }
//         m_p = new int(*s.m_p);
//         this->m_A = s.m_A;
//         this->m_B = s.m_B;
//         return *this;
//     }

//     ~stu()
//     {
//         if(m_p)
//         {
//             delete m_p;
//             m_p = NULL;
//         }
//     }


//     int m_A;
//     int m_B;
//     int* m_p;
// };

//     ostream& operator<< (ostream& out,stu& s)//全局的方式重载<<
//     {
//         out << "m_A = " << s.m_A << '\n' << "m_B = " << s.m_B << '\n' << "m_p = " << s.m_p << endl;
//         return out;
//     }


// void test_add()//重载+
// {
//     stu s1(10, 20);
//     stu s2(30, 40);
//     stu s3 = s1 + s2;
//     cout << s3.m_A << '\n' << s3.m_B << endl;
// }

// void test_sub()//重载-
// {
//     stu s1(10, 20);
//     stu s2(30, 40);
//     stu s3 = s1 - s2;
//     cout << s3.m_A << '\n' << s3.m_B << endl;
// }

// void test_ls()//重载<<
// {
//     stu s1(10, 20);
//     stu s2(30, 40);
//     stu s3 = s1 - s2;
//     cout << s3 << endl;
// }

// void test_qadd()//重载前置++
// {
//     stu s1(10, 20);
//     stu s2(30, 40);
//     stu s3 = s1 + s2;
//     cout << s3 << endl;
//     ++s3;
//     cout << s3 << endl;
//     ++s3;
//     cout << s3 << endl;
//     ++(++s3);
//     cout << s3 << endl;
// }

// void test_hadd()//重载后置++
// {
//     stu s1(10, 20);
//     stu s2(30, 40);
//     stu s3 = s1 + s2;
//     cout << s3 << endl;
//     s3++;
//     cout << s3 << endl;
//     s3++;
//     cout << s3 << endl;
//     ((s3++)++)++;
//     cout << s3 << endl;
// }

// void test_ag()//重载=
// {
//     stu s1(10, 20);
//     s1.m_A = 10;
//     s1.m_B = 20;
//     int a = 30;
//     s1.m_p = &a;
//     stu s2 = s1;
//     cout << s2 << endl;
// }


// int main()
// {
//     //test_add();
//     //test_sub();
//     //test_ls();
//     //test_hadd();
//     //test_ag();
//     return 0;
// }


// #include <bits/stdc++.h>
// using namespace std;

// class CPU
// {
// public:
//     virtual void cpu() = 0;
// };

// class VC
// {
// public:
//     virtual void vc() = 0;
// };

// class MEM
// {
// public:
//     virtual void mem() = 0;
// };

// class InterCPU: public CPU
// {
// public:
//     virtual void cpu()
//     {
//         cout << "Inter的CPU开始运行了" << endl;
//     }

// };

// class InterVC: public VC
// {
// public:
//     virtual void vc()
//     {
//         cout << "Inter的显卡开始运行了" << endl;
//     }

// };

// class InterMEM: public MEM
// {
// public:
//     virtual void mem()
//     {
//         cout << "Inter的内存条开始运行了" << endl;
//     }
// };

// class LonveCPU: public CPU
// {
// public:
//     virtual void cpu()
//     {
//         cout << "Lonve的CPU开始运行了" << endl;
//     }

// };

// class LonveVC: public VC
// {
// public:
//     virtual void vc()
//     {
//         cout << "Lonve的显卡开始运行了" << endl;
//     }

// };

// class LonveMEM: public MEM
// {
// public:
//     virtual void mem()
//     {
//         cout << "Lonve的内存条开始运行了" << endl;
//     }
// };

// class computer
// {
// public:
//     computer(CPU* cpu, VC* vc, MEM* mem)
//     {
//         m_cpu = cpu;
//         m_vc = vc;
//         m_mem = mem;
//     }

//     ~computer()
//     {
//         if(m_vc != NULL)
//         {
//             delete m_vc;
//             m_vc = NULL;
//         }
//         if(m_cpu != NULL)
//         {
//             delete m_cpu;
//             m_cpu = NULL;
//         }
//         if(m_mem != NULL)
//         {
//             delete m_mem;
//             m_mem = NULL;
//         }
//     }

//     void work()
//     {
//         m_cpu->cpu();
//         m_vc->vc();
//         m_mem->mem();
//     }


// private:
//     VC* m_vc;
//     MEM* m_mem;
//     CPU* m_cpu;
// };


// void test()
// {
//     cout << "第一台电脑的创建" << endl;
//     computer* c = new computer(new InterCPU, new InterVC, new InterMEM);
//     c->work();
//     delete c;
//     c = NULL;
//     cout << "第二台电脑的创建" << endl;
//     computer* c2 = new computer(new InterCPU, new InterVC, new LonveMEM);
//     c2->work();
//     delete c2;
//     c2 = NULL;
// }

// int main()
// {
//     test();
//     return 0;
// }



// #include<bits/stdc++.h>
// using namespace std;
// int main()
// {
//     ofstream ofs;
//     ofs.open("test.txt", ios::out | ios::trunc );
//     ofs << "test" << "\n" << "test" << endl;
//     ofs.close();
//     char data[10];
//     ifstream ifs;
//     ifs.open("test.txt", ios::in);
//     ifs >> data;
//     cout << data << endl;
//     string buf;
//     getline(ifs, buf);
//     cout << buf << endl;
//     return 0;
// }


// #include <bits/stdc++.h>
// using namespace std;

// template <typename T>
// void my_swap(T &a, T &b)
// {
//     T temp = a;
//     a = b;
//     b = temp;
// }

// int main()
// {
//     int a = 10;
//     int b = 20;
//     my_swap(a, b);
//     my_swap<int>(a, b);
//     cout << "a = " << a << endl;
//     cout << "b = " << b << endl;
//     return 0;
// }


// #include <bits/stdc++.h>
// #include <vector>
// using namespace std;

// class stu
// {
// public:
//     stu(string _name, int _age)
//     {
//         this->name = _name;
//         this->age = _age;
//     }

// public:
//     string name;
//     int age;
// };

// int main()
// {
//     // vector<int> a;
//     // a.push_back(10);
//     // a.push_back(20);
//     // a.push_back(30);
//     // for(vector<int>::iterator it = a.begin(); it != a.end(); it++)
//     // {
//     //     cout << (*it) << endl;
//     // }

//     vector<stu> b;
//     stu s1("a" , 16);
//     stu s2("b" , 17);
//     stu s3("c" , 18);
//     stu s4("d" , 19);
//     stu s5("e" , 20);

//     b.push_back(s1);
//     b.push_back(s2);
//     b.push_back(s3);
//     b.push_back(s4);
//     b.push_back(s5);

//     for(vector<stu>::iterator it = b.begin(); it != b.end(); ++it)
//     {
//         cout << "name: " << it->name << "   " << "age: " << it->age << endl;
//     }

//     return 0;
// }


// #include <bits/stdc++.h>
// using namespace std;
// int main()
// {
//     vector<vector<int>> a;
//     vector<int> b1;
//     vector<int> b2;
//     vector<int> b3;
//     vector<int> b4;
//     vector<int> b5;

//     for(int i = 0; i < 4; ++i)
//     {
//         b1.push_back(i + 1);
//         b2.push_back(i + 5);
//         b3.push_back(i + 9);
//         b4.push_back(i + 13);
//         b5.push_back(i + 17);
//     }

//     a.push_back(b1);
//     a.push_back(b2);
//     a.push_back(b3);
//     a.push_back(b4);
//     a.push_back(b5);

//     for(vector<vector<int>>::iterator it = a.begin(); it != a.end(); ++it)
//     {
//         for(vector<int>::iterator vit = (*it).begin(); vit != (*it).end(); ++vit)
//         {
//             cout << *vit << ' ';
//         }
//         cout << '\n';
//     }
//     return 0;
// }

// #include <bits/stdc++.h>
// using namespace std;
// int main()
// {
//     string str1;
//     str1 = "wotashi";
//     string str2;
//     str2 = "orewa";
//     //str1 += str2;
//     //cout << str1 << endl;
//     //int pos = str1.find("ta");
//     //cout << pos << endl;
//     int len = str1.size();
//     cout << len;
//     return 0;
// }



// #include <iostream>
// #include <vector>
// using namespace std;
// int main()
// {
//     vector<int>v1;
//     for(int i = 0; i < 100; ++i)
//     {
//         v1.push_back(i);
//     }
//     cout << v1.capacity() << endl << v1.size() << endl;
//     cout << v1[5] << endl;
//     vector<int>v2;
//     for(int i = 100; i < 200 ; ++i)
//     {
//         v2.push_back(i);
//     }
//     v1.swap(v2);
//     for(int i = 0; i < 100; ++i)
//     {
//         cout << v1[i] << ' ';
//     }
//     cout << '\n';
//     for(vector<int>::iterator it = v2.begin(); it != v2.end(); ++it)
//     {
//         cout << *it << ' ';
//     }
//     cout << endl;
//     cout << v1.capacity() << endl << v1.size() << endl;
//     cout << v1[5] << endl;
//     v1.resize(10);
//     cout << v1.capacity() << endl << v1.size() << endl;
//     cout << v1[5] << endl;
//     vector<int>(v1).swap(v1);
//     cout << v1.capacity() << endl << v1.size() << endl;
//     cout << v1[5] << endl;

//     vector<int> v3;
//     v3.reserve(5);
//     v3.push_back(1);
//     cout << v3.capacity() << endl;
//     return 0;
// }

// #include <bits/stdc++.h>
// using namespace std;
// int main()
// {
//     vector<int>v1;
//     v1.push_back(1);
//     v1.push_back(2);
//     v1.push_back(3);
//     v1.insert(v1.begin(), 100);
//     v1.insert(v1.begin(), 200);
//     v1.insert(v1.begin(), 300);
//     v1.insert(v1.begin() + 3, 0);
//     v1.pop_back();
//     v1.erase(v1.begin());
//     v1.erase(v1.begin() + 2);
//     v1.erase(v1.begin() + 1, v1.end() - 1);
//     v1.clear();
//     if(v1.empty())
//     {
//         cout << "kong" << endl;
//     }
//     for(int i = 0; i < v1.size(); ++i)
//     {
//         cout << v1[i] << ' ';
//     }
//     return 0;
// }


// #include <bits/stdc++.h>
// using namespace std;

// class stu
// {
// public:

//     stu(string _name, int _age)
//     {
//         this->name = _name;
//         this->age = _age;
//     }

//     string name;
//     int age;
// };


// class stucmp
// {
// public:
//     bool operator()(int e2, int e1)
//     {
//         return e2 > e1;
//     }
// };

// int main()
// {
//     map<int, stu, stucmp> clas;
//     stu s1("zhangsan", 15);
//     stu s2("lisi", 16);
//     stu s3("wangwu", 15);
//     stu s4("zhaoliu", 17);
    
//     clas.insert(make_pair(1, s1));
//     clas.insert(make_pair(2, s2));
//     clas.insert(make_pair(4, s4));
//     clas.insert(make_pair(3, s3));

//     map<int, stu, stucmp>::iterator i = clas.end();
//     i--;
//     clas.erase(i);
//     for(map<int, stu, stucmp>::iterator it = clas.begin(); it != clas.end(); ++it)
//     {
//         cout << "学号是： " << it->first << "姓名是：" << it->second.name << "年龄是：" << it->second.age << endl;
//     }
//     return 0;
// }


// #include <iostream>
// #include <vector>
// #include <algorithm>
// #include <string>
// using namespace std;

// class PrintInt
// {
// public:
//     void operator()(int val)
//     {
//         cout << val << ' ';
//     }
// };

// class stu
// {
// public:
//     stu(string _name, int _num)
//     {
//         this->name = _name;
//         this->num = _num;
//     }

//     bool operator<(const stu& s)
//     {
//         return ((this->name < s.name) && (this->num < s.num));
//     }

//     string name;
//     int num;
// };

// bool cmp_stu(const stu& s1, const stu& s2)
// {
//     return ((s1.name < s2.name) && (s1.num < s2.num));
// }

//  void PrintStu(const stu& s)
//  {
//     cout << "姓名：" << s.name << " 学号：" << s.num << endl;
//  }

// int main()
// {
//     // vector<int>v1, v2;
//     // for(int i = 0; i <= 10; ++i)
//     // {
//     //     v1.push_back(i);
//     //     v2.push_back(i + 5);
//     // }
//     // vector<int>vTarget;
//     // vTarget.resize(min(v1.size(), v2.size()));

//     // vector<int>::iterator itEnd = set_intersection(v1.begin(), v1.end(), v2.begin(), v2. end(), vTarget.begin());
//     // for_each(vTarget.begin(), itEnd, PrintInt());
//     // cout << endl;

//     vector<stu> vs1, vs2, vsTarget;
//     stu s1("aaa", 1);
//     stu s2("bbb", 2);
//     stu s3("ccc", 3);
//     stu s4("ddd", 4);
//     stu s5("eee", 5);
//     vs1.push_back(s1);
//     vs1.push_back(s2);
//     vs1.push_back(s3);
//     vs1.push_back(s4);
//     vs1.push_back(s5);

//     stu s6("fff", 6);
//     stu s7("ggg", 7);
//     vs2.push_back(s3);
//     vs2.push_back(s4);
//     vs2.push_back(s5);
//     vs2.push_back(s6);
//     vs2.push_back(s7);

//     //vsTarget.resize(min(vs1.size(), vs2.size()));
//     vector<stu>::iterator itEnd = set_intersection(vs1.begin(), vs1.end(), vs2.begin(), vs2.end(), vsTarget.begin(),cmp_stu);
//     for_each(vsTarget.begin(), vsTarget.end(), PrintStu);
//     cout << endl;


//     //  //求交集
//     // std::vector<stu> intersection;
//     // std::set_intersection(vs1.begin(), vs1.end(), vs2.begin(), vs2.end(), back_inserter(intersection));

//     // // 输出交集
//     // // for (const auto& data : intersection) {
//     // //     std::cout << "Key: " << data.name << ", Value: " << data.num << std::endl;
//     // // }

//     // for_each(intersection.begin(), intersection.end(), PrintStu);
//     return 0;
// }



// // #include <iostream>
// // #include <vector>
// // #include <algorithm>

// // // 自定义数据类型
// // struct MyData {
// //     int key;
// //     double value;

// //     bool operator<(const MyData& b) 
// //     {
// //         return this->key < b.key;
// //     }
// // };


// // // 比较函数，用于排序
// // bool compare(const MyData& a, const MyData& b) {
// //     return a.key < b.key;
// // }

// // int main() {
// //     // 创建两个包含自定义数据类型的集合
// //     std::vector<MyData> set1 = {{1, 1.1}, {2, 2.2}, {3, 3.3}, {4, 4.4}};
// //     std::vector<MyData> set2 = {{2, 2.2}, {3, 3.3}, {4, 4.4}, {5, 5.5}};

// //     // 对集合进行排序
// //     // std::sort(set1.begin(), set1.end(), compare);
// //     // std::sort(set2.begin(), set2.end(), compare);

// //     // 求交集
// //     std::vector<MyData> intersection;
// //     std::set_intersection(set1.begin(), set1.end(), set2.begin(), set2.end(), std::back_inserter(intersection));

//     // // 输出交集
//     // for (const auto& data : intersection) {
//     //     std::cout << "Key: " << data.key << ", Value: " << data.value << std::endl;
//     // }

// //     return 0;
// // }



// #include <iostream>
// #include <string>
// #include <vector>
// #include <algorithm>
// using namespace std;

// class stu
// {
// public:
//     stu(string _name, int _num)
//     {
//         this->name = _name;
//         this->num = _num;
//     }


//     bool operator<(const stu& s)
//     {
//         return ((this->name < s.name) && (this->num < s.num));
//     }

//     string name;
//     int num;
// };

// int main()
// {
//     vector<stu>vs1 = {{"aaa", 1}, {"bbb", 2}, {"ccc", 3}};
//     vector<stu>vs2 = {{"bbb", 2}, {"ddd", 3}, {"eee", 4}};
//     vector<stu>vsTarget;
//     set_union(vs1.begin(), vs1.end(), vs2.begin(), vs2.end(), back_inserter(vsTarget));
//     for(vector<stu>::iterator it = vsTarget.begin(); it != vsTarget.end(); ++it)
//     {
//         cout << "姓名：" << it->name << " 学号：" << it->num << '\n';
//     }
//     return 0;
// }


// #include <iostream>
// using namespace std;
// class stu
// {
//     int a;
//     char c;
//     int a1;
// };

// struct person
// {
//     int a;
//     char c;
//     int a1;
// };


// int main()
// {
//     cout << sizeof(stu) << '\n';
//     cout << sizeof(person) << '\n';
//     return 0;
// }


// #include <bits/stdc++.h>
// using namespace std;
// int main()
// {
//     int a = 20;
//     int k = 0;
//     int ans = 0;
//     for(; a > 0 && k < 2;)
//     {
//         a -= 2;
//         ans++;
//         k++;
//         if(k == 2)
//         {
//             ans++;
//             k = 0;
//         }
//     }
//     cout << ans;
//     return 0;
// }


// #include <bits/stdc++.h>
// using namespace std;
// int main()
// {
//     int a = 1;
//     int k = 6;
//     int x = 1;
//     for(int i = 0; i < 7 ;++i)
//     {
//         for(int j = 0; j < k; ++j)
//         {
//             cout << ' ';
//         }
//         for(int j = 0; j < x; ++j)
//         {
//             cout << '*';
//         }
//         x += 2;
//         k--;
//         cout << '\n';
//     }
//     x -= 2;
//     k++;
//     for(int i = 0; i < 7 ;++i)
//     {
//         for(int j = 0; j < k; ++j)
//         {
//             cout << ' ';
//         }
//         for(int j = 0; j < x; ++j)
//         {
//             cout << '*';
//         }
//         x -= 2;
//         k++;
//         cout << '\n';
//     }
//return 0;

// #include <bits/stdc++.h>
// using namespace std;
// int main()
// {
//     ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
//     return 0;
// }

// #include<bits/stdc++.h>
// typedef int SLTDataType;
// typedef struct SListNode
// {
//     SLTDataType data;
//     SListNode* next;
// }SLTNode;


// void SLTPrint(SLTNode* phead);

// //头部插入删除/尾部插入删除
// void SLTPushBack(SLTNode** pphead, SLTDataType x)
// {
//     SListNode** top = pphead;
//     SListNode newNode;
//     newNode.next = NULL;
//     newNode.data = x;
//     while((*top)->next != NULL)
//     {
//         *top = (*top)->next;
//     }
//     (*top)->next = &newNode;
// }
// void SLTPushFront(SLTNode** pphead, SLTDataType x);
// void SLTPopBack(SLTNode** pphead);
// void SLTPopFront(SLTNode** pphead);

// //查找
// SLTNode* SLTFind(SLTNode* phead, SLTDataType x);
// //在指定位置之前插入数据
// void SLTInsert(SLTNode** pphead, SLTNode* pos, SLTDataType x);
// //删除pos节点
// void SLTErase(SLTNode** pphead, SLTNode* pos);
// //在指定位置之后插入数据
// void SLTInsertAfter(SLTNode* pos, SLTDataType x);
// //删除pos之后的节点
// void SLTEraseAfter(SLTNode* pos);
// //销毁链表
// void SListDesTroy(SLTNode** pphead);


// #include <bits/stdc++.h>
// using namespace std;
// int arr[5];
// int main()
// {
//     int ans = 100;
//     int sum = 0;
//     srand((unsigned int)time(NULL));
//     do
//     {
//         sum = 0;
//         for(int i = 0; i < 5; ++i)
//         {
//             do
//             {
//                 arr[i] = rand()%99 + 1;
//             } while (arr[i] < 10);
//             sum += arr[i];
//         }
        
//     } while (sum != 100);
//     for(int i = 0; i < 5; ++i)
//         cout << arr[i] << ' ';
    
// }





// #include <iostream>
// using namespace std;
// int main()
// {
//     int i;
//     cin >> i;
//     while(true)
//     {
//         ;
//     }
//     return 0;
// }

// #include <iostream>
// using namespace std;
// class A
// {
// private:
//     int a;
//     char c;
//     int *p;
// public:
//     //无参构造函数
//     A()
//     {
//         this->a = 0;
//         this->c = '\0';
//         this->p = new int(5);
//     }

//     //析构函数
//     ~A()
//     {
//         delete this->p;
//         p = NULL;
//     }
// };

// int main()
// {
//     return 0;
// }

// #include<iostream>
// using namespace std;
// template<class T>
// void mySwap(T& a, T& b)
// {
//     T t = a;
//     a = b;
//     b = t;
// }

// int main()
// {
//     int a = 5;
//     int b = 10;
//     mySwap(a, b);
//     cout << a << "  " << b;
//     return 0;
// }


// template<typename T1, typename T2, typename T3, ...> //类模板
// class A
// {
// private:
//     T1 a;
//     T2 b;
//     T3 c;
// };

// #include <iostream>
// using namespace std;
// int main(int argc, char *argv[])
// {
// 	string strText = "How are you?";
// 	string strSeparator = " ";
// 	string strResult;
// 	int size_pos = 0;
// 	int size_prev_pos = 0;
// 	while((size_pos=strText.find_first_of(strSeparator, size_pos)) != string::npos)
// 	{
// 		strResult = strText.substr(size_prev_pos, size_pos-size_prev_pos);
// 		cout<<strResult<<" ";
// 		size_prev_pos = ++size_pos;
// 	}
// 	if(size_prev_pos != strText.size())
// 	{
// 		strResult = strText.substr(size_prev_pos, size_pos-size_prev_pos);
// 		cout<<strResult<<" ";
// 	}
//     strText.find(1);
// 	cout<<endl;
// 	return 0;
// }

// #include <bits/stdc++.h>
// using namespace std;

// int myAtoi(string str) {
//         bool Positive = true;
//         bool start = false;
//         string s;
//         for(int i = 0; i < str.size(); ++i)
//         {
//             if((str[i] > '9' || str[i] < '0'))
//             {
//                 if(str[i] == '-' || str[i] == '+')
//                     start = true;
//                 if(str[i] != ' ' && str[i] != '-' && str[i] != '+')
//                     break;
//                 if(i + 1 < str.size())
//                     if(str[i + 1] > '9' && str[i + 1] < '0')
//                         if(start)
//                     break;
//             }
//             if(str[i] <= '9' && str[i] >= '0')
//             {
//                 s += str[i];
//                 start = true;
//             }
//             if(str[i] == '-' && i + 1 < str.size() && (str[i + 1] <= '9' && str[i + 1] >= '0'))
//             {
//                 Positive = false;
//             }
//         }
//         reverse(s.begin(), s.end());
//         long long ans = 0;
//         for(int i = 0; i < s.size(); ++i)
//         {
//             ans += pow(10, i) * (s[i] - '0');
//         }
//         if(ans >= 2147483648 && Positive)
//             return 2147483648;
//         else if(ans >= 2147483648 && !Positive)
//             return -2147483648;
//         ans *= Positive ? 1 : -1;
//         return ans;
//     }
// int main()
// {
//     string str;
//     cin >> str;
//     cout << myAtoi(str);
// }



#include <iostream>
#include <string>
using namespace std;

int main() {
    string s;
    cin >> s;
    size_t pos = s.find_last_of(" ");
    string ss = s.substr(pos);
    cout << s.substr(pos).size();
}

















